# 自定义文件存储类
import os
from django.core.files.storage import Storage, FileSystemStorage
from django.conf import settings
from utils.file_storage import upload_file
from django.http import HttpResponse


# Django默认保存文件时，会调用Storage类中的save方法
# Storage类中的save方法会调用DEFAULT_FILE_STORAGE配置项指定的类中_save方法
# _save方法的返回值最终会保存在表的image字段中

# Django保存文件之前，会调用DEFAULT_FILE_STORAGE配置项指定的类中exists方法
# 判断文件在系统中是否存在，防止同名的文件被覆盖


class QINIUStorage(Storage):
    """QINIUStorage文件存储类"""

    def _save(self,name,content):
        """保存文件时调用"""
        # name: 上传文件的名称 a.txt
        # content: File类的对象，包含了上传文件的内容
        # 获取上传文件内容
        #file_content = content

        # 上传文件
        try:
            key = upload_file(content)
        except Exception as e:
            raise Exception('上传文件到七牛云失败')

        # 返回file_id
        return key

    def exists(self, name):
        """判断文件是否存在"""
        return False

    # 拼接访问全路径 ： http://oyucyko3w.bkt.clouddn.com/FrmZHVEGylygB5DGuyhcb1i6eOT5
    def url(self, name):
        """返回可访问到文件的url地址"""
        # return 'http://172.16.179.131:8888/' + name
        return 'http://oyucyko3w.bkt.clouddn.com/' + name



